﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Nage.Algorithms.Solution;
using Nage.Algorithms.Population;

namespace Nage.Examples.RastriginIsland.Topologies
{
    public interface ITopology<TSol> : IEnumerable<TopologyNode<TSol>> where TSol : ISolution
    {
        TopologyType Type { get; }
        ITopologyMigrator<TSol> Migrator { get; set; }

        void Add(IPopulation<TSol> population);
        IEnumerable<IPopulation<TSol>> GetNeighbours(IPopulation<TSol> population);
        void Migrate();
    }
}
